iT邦幫忙

DAY 12
0

初學Java系列 第 9

Day12.[polymorphism]

  • 分享至 

  • xImage
  •  

polymorphism (continued)
[polymorphism]
參數與回傳型別也可以是實際物件型別的superclass,ex.
[參數]

class Feed{
	public void giveFood(pet i){
		i.eat;
	}
}

//像這樣,我若將參數部分用Pet此型別物件的話,那麼我可以將使用Pet的subclass放入,像是Dog,Cat,Fish,並執行Feed的動作

[return type]

class Me{
	public void start(){
		Feed f = new Feed();
		Dog d = new Dog();
		Cat c = new Cat();
		
		f.givefood(d);
		f.givefood(c);
		
		//會執行他們(d和c)各自的eat的動作
		//只要我傳入的是Pet的subclass,皆能使用Feed的method
	}
}

[如何防止class被做出subclass]
1.存取控制: 不將class標示為public;這種class只能被同個package內的class去做出subclas
[附註]
class是不得被宣告為private的

2.使用final的class:是不能被繼承的class

3.讓class只有private的constructor

[why use final?]
為了確保所有method都會是我寫的版本;若要防指特定method被override,也可以只對method標上final


上一篇
Day11.繼承的細節與access level與polymorphism
下一篇
Day13.override,overload與object
系列文
初學Java20
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言